package com.skyline.wizard.searcher;

import java.util.List;

import com.skyline.common.bean.Page;

/**
 * Class <code>Searcher</code> 用户通过Searcher来查询
 * 
 * @author Jairus Chan
 * @version 0.1, 11/30/10
 * @since JDK1.6
 */

public interface Searcher<T> {

	/**
	 * search(String queryString, Page page,String[] fields, Analyzer analyzer)
	 * 通过给定的Analyzer查询
	 * 
	 * @param queryString
	 *            查询词条
	 * @param page
	 *            用于记录查询的分页信息
	 * @param fields
	 *            所需查询的字段
	 * @param analyzer
	 *            查询所用的Analyzer
	 * @return ResultSet
	 */
	//public List<T> search(String queryString, Page page, Analyzer analyzer);

	/**
	 * searchWithStandardAnalyzer(String queryString, Page page,String[] fields)
	 * 通过Lucene的标准Analyzer查询，内部实现是通过调用search()方法
	 * 
	 * @param queryString
	 *            查询词条
	 * @param page
	 *            用于记录查询的分页信息
	 * @param fields
	 *            所需查询的字段
	 * @return ResultSet
	 */
	public List<T> searchWithStandardAnalyzer(String queryString, Page page);

	/**
	 * searchWithDefaultAnalyzer(String queryString, Page page,String[] fields)
	 * 通过用户自定义的默认Analyzer查询，内部实现是通过调用search()方法
	 * 
	 * @param queryString
	 *            查询词条
	 * @param page
	 *            用于记录查询的分页信息
	 * @param fields
	 *            所需查询的字段
	 * @return ResultSet
	 */
	public List<T> searchWithDefaultAnalyzer(String queryString, Page page);
	
}
